package com.itheima.mapper;

import com.github.pagehelper.Page;
import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

@Mapper//1.创建接口的代理对象    2.将代理对象放入IOC容器中
public interface EmpMapper {


    /*
        分页查询（带条件）
    */

    //获取当前页的结果列表
    //使用动态的SQL
    //可能报错：not found .Available。要加注解@Param()
    //Page<Emp>或者List<Emp>都行
    public Page<Emp> list(@Param("name") String name,
                          @Param("gender") Short gender,
                          @Param("begin") LocalDate begin,
                          @Param("begin") LocalDate end);


    /*
        批量删除
    */
    void delete(@Param("ids") List<Integer> ids);


    //新增员工信息
    //这里不能有@Param("emp")
    void insert(Emp emp);

    //根据id查询员工信息
    @Select("select * from emp where id=#{id}")
    Emp findById(Integer id);

    //根据id修改员工信息
    void updateById(Emp emp);

    //用户登录
    @Select("select * from emp where username=#{username} and password=#{password}")
    Emp getByUsernameAndPassword(@Param("username") String username,
                                 @Param("password") String password);

    //性别
    List<Map<String, Object>> getEmpGenderData();

    //员工统计
    List<Map<String, Object>> getEmpJobData();



    //用户名
    @Select("select * from Emp where username=#{username}")
    Emp findByUsername(String username);

    //根据部门id删除部门下所有员工
    @Delete("delete from emp where dept_id=#{deptId}")
    void deleteByDeptId(Integer deptId);
}
